<h3>插件钩子</h3>
<p>
    baigo CMS 中有一种叫钩子的机制，允许插件把一些功能“挂载”到 baigo CMS 当中。也就是说，在系统运行至某一个环节时，去调用插件内的一些函数。钩子分为三种：
</p>

<ol>
    <li>
        动作 Action：动作是 baigo CMS 运行到某些环节，或者在某些事件发生时，就会被执行的一种钩子。任何的插件都可以通过动作接口来指示系统在遇到这些环节或者事件的时候，就执行指定的 PHP 函数。点此 <a href="{$BG_URL_HELP}index.php?m=plugin&a=action">查看列表</a>
    </li>
    <li>
        过滤器 Filter：过滤器的是 baigo CMS 用于修改即将要保存或者发送出去的数据的一种钩子。任何的插件都可以通过过滤器接口来指示系统在遇到某些环节或者事件的时候，就执行指定的 PHP 函数去修改特定的数据。点此 <a href="{$BG_URL_HELP}index.php?m=plugin&a=filter">查看列表</a>
    </li>
    <li>
        自定义 Custom：自定义钩子一般用在模板、插件中，挂载方法请查看 <a href="{$BG_URL_HELP}index.php?m=plugin&a=obj_plugin#trigger">插件对象->挂载一个钩子</a>。</a>
    </li>
</ol>

<p>
    某些时候动作或过滤器可以达到相同的效果。比如要修改文章的内容，可以把插件挂载到动作 publish_article 上，在文章的内容保存到数据库前就修改它。也可以把插件挂载到过滤器 article_content 上，在文章的内容发送到浏览器前修改它。
</p>
<p>
    动作钩子和过滤器钩子最大的区别是过滤器有回传参数，可以在利用插件将修改过的数据回传给系统，不同的钩子处理修改过的数据是也有所不同，有的是保存到数据库之前就修改，有的是在内容发送到浏览器前修改。
</p>

<div>&nbsp;</div>

<h4>钩子的命名</h4>
<p>
    插件钩子命名一般遵循如下规则：<code>{$类型}_{$位置}_{$模块}_{$状态}</code>，如：filter_console_link_add（过滤器_管理后台_链接_添加）
</p>
